import MD5 from '@/utils/md5.js';
const {
	appid,
	salt,
	key
} = require("@/config/constant.js")


/**
 *  @description 获取年月日  时分秒
 *  @returns {string}  yyyy-MM-dd hh:mm:ss
 */
export function getDate(option = {}) {
	const date =option.date? new Date():new Date();
	let str = date.getFullYear() + '-' + addZero(date.getMonth() + 1) + '-' + addZero(date.getDate());

	if (option.full) {
		str += ' ' + addZero(date.getHours()) + ':' + addZero(date.getMinutes()) + ':' + addZero(date.getSeconds());
	}
	return str;
}

/**
 *  @description 将日期转换成xxx分钟前
 *  @returns {string}  yyyy-MM-dd hh:mm:ss
 */
export function getDiffTime(timestamp) {
	let curTimestamp = parseInt(new Date().getTime() / 1000);
	let targetTimestamp = parseInt(new Date(timestamp).getTime() / 1000)
	var timestampDiff = curTimestamp - targetTimestamp;
	if (timestampDiff < 60) {
		return "刚刚";
	} else if (timestampDiff < 3600) {
		return Math.floor(timestampDiff / 60) + "分钟前";
	} else {
		return getDate({
			date: timestamp,
			full: true
		})
	}
}



const addZero = function(date) {
	return date > 9 ? date : `0${date}`;
};




/**
 * 防抖
 * @param {Function} func
 * @param {number} wait
 * @param {boolean} immediate
 * @return {*}
 */
export function debounce(func, wait, immediate) {
	let timeout, args, context, timestamp, result;

	const later = function() {
		// 据上一次触发时间间隔
		const last = +new Date() - timestamp;

		// 上次被包装函数被调用时间间隔 last 小于设定时间间隔 wait
		if (last < wait && last > 0) {
			timeout = setTimeout(later, wait - last);
		} else {
			timeout = null;
			// 如果设定为immediate===true，因为开始边界已经调用过了此处无需调用
			if (!immediate) {
				result = func.apply(context, args);
				if (!timeout) context = args = null;
			}
		}
	};

	return function(...args) {
		context = this;
		timestamp = +new Date();
		const callNow = immediate && !timeout;
		// 如果延时不存在，重新设定延时
		if (!timeout) timeout = setTimeout(later, wait);
		if (callNow) {
			result = func.apply(context, args);
			context = args = null;
		}
		return result;
	};
}

/**
 * 生成百度翻译query
 * @param {String} query  需要翻译的内容
 * @return {*}
 */

export function getBaiduQuery(query) {
	const sign = MD5(appid + query + salt + key)
	return {
		appid,
		salt,
		sign
	}
}
